package com.demo.juc.futuretask;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @Author: shubin_yao
 * @Date: 2022/09/19/22:57
 * @Description: FutureTask 基本用法 ：
 * 1） 含义：用于实现比较耗时的任务单独开启一个分支
 * 2） 特点：多线程、异步、有返回
 */
public class FutureTaskThread {

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        FutureTask<String> futureTask = new FutureTask<>(new MyThread());

        new Thread(futureTask).start();

        System.out.println(futureTask.get());

    }


    /**
     * 实现call方法的接口
     */
    static class MyThread implements Callable<String> {
        @Override
        public String call() throws Exception {
            System.out.println("执行了call()方法。。。");
            return "hello FutureTask";
        }
    }

}
